package com.yelink.metrics.core.constant.annotations;

import com.yelink.metrics.core.constant.enums.FieldDefine;
import com.yelink.metrics.core.constant.enums.FieldType;
import com.yelink.metrics.core.constant.enums.TimeDimension;

import java.lang.annotation.*;

/**
 * 字段额外信息
 * @author idea
 */
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface MetricsColumn {

    /**
     * 字段中文名
     */
    String comment() default "";

    /**
     * 字段备注
     */
    String remark() default "";

    FieldType filedType() default FieldType.AUTO;

    /**
     *  字段定义：
     *  <p>为维度时，会被组成uniCode的一部分</p>
     */
    FieldDefine filedDefine() default FieldDefine.AUTO;

    /**
     * <p>仅当 filedDefine = FieldDefine.TIME_DIMENSION , 即时间维度类型时有效</p>
     * 当此字段生效时，remark会自动赋予成枚举的{@link TimeDimension#remark
     */
    TimeDimension timeEnum() default TimeDimension.NONE;

}